package inabit.data.expression.arithmetic;

import java.util.Collection;

import inabit.base.WorkingMemory;
/**Represents an arithmetic expression which can be at the right side of a relational expression,
 * must return a String when evaluated to be used by the relational expression
 * @author Rafael Rocha*/
public interface ArithmeticExpression {
	/**Returns the value of this expression*/
	public String getResult(WorkingMemory wm);
	/**Returns the string representation of this expression*/
	public String stringForm();
	/**Returns the list of ids of variables referenced by this arithmetic expression*/
	public Collection<String> getReferenced();
	/**Returns true if this expression doesn't have children expressions to be evaluated before it*/
	public boolean isLeaf();
}
